package com.inforich.orderManage.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.inforich.carManage.domain.Driver;
import com.inforich.common.annotation.Excel;
import com.inforich.common.core.domain.BaseParamEntity;
import com.inforich.common.mybatis.Location;
import com.inforich.common.mybatis.LocationHandler;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 预约对象 br_booking
 *
 * @author hjm
 * @date 2022-10-26
 */
@Data
@EqualsAndHashCode()
@Accessors(chain = true)
@TableName("br_booking")
public class Booking extends BaseParamEntity {

  private static final long serialVersionUID = 1L;

  /**
   * 主键
   */
  @TableId(type = IdType.ASSIGN_UUID)
  private String id;

  /**
   * 预约时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd")
  @Excel(name = "预约时间", width = 30, dateFormat = "yyyy-MM-dd")
  private Date bookingTime;

  /**
   * 所属项目->br_project.id
   */
  private String projectId;
  @Excel(name = "所属项目")
  @TableField(exist = false)
  private String projectName;
  @TableField(exist = false)
  private String projectPersonInCharge;
  @TableField(exist = false)
  private String projectPersonPhone;

  /**
   * 完成时间
   */
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
  private Date completeTime;

  /**
   * 清运公司->br_transport_company.id
   */
  private String transportCompanyId;
  @Excel(name = "所属公司")
  @TableField(exist = false)
  private String transportCompanyName;
  @TableField(exist = false)
  private String transportCompanyContactName;
  @TableField(exist = false)
  private String transportCompanyContactPhone;
  /**
   * 预计车次
   */
  @Excel(name = "预计车次")
  private Long bookingCarNumber;
  /**
   * 车型要求(中文)
   */
  private String carType;
  /**
   * 车型要求对象( 公共类别 )
   */
  @Excel(name = "车型要求", dictType = "car_type_id")
  private Long carTypeClassId;
  /**
   * 处置地->br_disposal_land.id
   */
  private Long disposalLandId;
  @Excel(name = "资源利用化企业")
  @TableField(exist = false)
  private String disposalLandName;
  /**
   * 所在位置
   */
  @TableField(typeHandler = LocationHandler.class)
  private Location location;
  /**
   * 预约状态( 10:草稿;20:待分配;30:进行中;40:已完成;50:已过期 )
   */
  @Excel(name = "预约状态", dictType = "booking_state")
  private Long state;
  /**
   * 创建时间
   */
  @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
  private Date createdDate;
  /**
   * 修改时间
   */
  private Date modifiedDate;

  /**
   * 图片
   */
  private String images;

  /**
   * 盖章图片
   */
  private String sealImages;

  @Excel(name = "建筑垃圾种类", dictType = "rubbish_type")
  private Integer rubbishType;
  @Excel(name = "处置面积(m²)")
  private BigDecimal disposalArea;
  @Excel(name = "处置重量(吨)")
  private BigDecimal disposalWeight;
  @Excel(name = "垃圾预估量(吨)")
  private BigDecimal disposalPlanWeight;
  @Excel(name = "施工单位")
  private String constructionDept;
  @Excel(name = "施工单位项目经理")
  private String constructionPerson;
  @Excel(name = "施工单位联系电话")
  private String constructionPhone;
  @Excel(name = "监理单位")
  private String supervisorDept;
  @Excel(name = "监理单位项目经理")
  private String supervisorPerson;
  @Excel(name = "监理单位联系电话")
  private String supervisorPhone;
  @Excel(name = "监理单位意见")
  private String supervisorSuggestion;
  @Excel(name = "项目进度", dictType = "rubbish_stage")
  private String rubbishStage;
  @Excel(name = "无机物类(吨)")
  private BigDecimal inorganicWeight;
  @Excel(name = "金属类(吨)")
  private BigDecimal metalWeight;
  @Excel(name = "废木材类(吨)")
  private BigDecimal woodWeight;
  @Excel(name = "其他类(吨)")
  private BigDecimal otherWeight;
  /**
   * 司机列表
   */
  @TableField(exist = false)
  private List<Driver> drivers;
  @TableField(exist = false)
  @Excel(name = "司机列表")
  private String driverNames;
  @TableField(exist = false)
  private List<Transport> transportList;


}